The impressive performance of modern compression algorithms combined with the growing availability of software and hardware video encoders and decoders have made encoded content prevalent. The MPEG (Motion Pictures Expert Group) standards have been extensively used in both commercial and consumer applications. A sample MPEG video compression and decompression system is shown in FIG. 1. Pixel data is input to the system and each macroblock (16×16 group of pixels) undergoes transform coding using a discrete cosine transform. The resulting data is quantized and will be entropy encoded if the macroblock is intracoded. The quantized data is passed through a feedback loop wherein the quantized data is dequantized and passed through an inverse transform. The resulting pixel data is then stored and used for the processing of subsequent macroblocks for calculating motion vectors in a motion estimation block as well as motion estimated difference values (difference values between similarly located macroblocks in subsequent frames) for interceding. The motion vectors and motion estimated difference values are subsequently entropy encoded and output in the output bitstream.
The MPEG decoder receives in the encoded output bitstream from the encoder and first entropy decodes the received bitstream. As the data is entropy decoded, If the data is identified as spatially encoded macroblock data, the data is passed through a reverse quantizer and an inverse DCT transform resulting in pixel values for the macroblock location. The pixel values are then stored and can be used for determining macroblock pixel values for a macroblock in a subsequent macroblock that has been interceded. If the resulting data is identified as a motion vector the motion vector is passed to a motion compensation module. Based upon the received motion vector for a given macroblock location, the motion compensation module retrieves macroblock data that has been stored at which the motion vector points and the motion compensation modules determines the pixel values for the macroblock location associated with the motion vector. In addition, difference values for interceded macroblocks may be received in the input bitstream and those values are either added or subtracted from the stored pixel values for a macroblock from a previous video frame that shares the same macroblock location. Once the data has been decoded into pixel values the resulting pixel value bitstream is output and may be displayed on a display device.
Creators and editors of encoded video content who desire to create standard cinematic effects such as fade-in, fade-out, and cross fade operate in the spatial/pixel domain. In the pixel-domain, the fading between two images can be expressed in the following formula,pnew=α·pa+(1−α)·pb where p is the pixel value in the pixel domain, and α=[0, 1] is the fading weight. If pb is monotonic color, it is called fade in (if α=0→1) and fade out (if α=1→0). Otherwise it is called cross fade. Thus, the creators and editors that work with encoded video content are forced to first decode each frame of the video content manipulating the data in the spatial/pixel domain to create these effects and then re-encode the frames. Therefore, in order to create these cinematic effects, a number of processor intensive steps must occur, especially the performance of transform decoding and encoding.
Automatic creation of such effects in real-time in a networked environment, such as through the internet or a cable television system, have proved difficult due to the processing requirements and latency.